/******************************************************************************
* 文件名称: schedule.h
* 内容摘要: 进程调度头文件
* 创建者の: 孔佳伟
* 个人主页: https://gitee.com/thin-wind/jump
* 修改记录: 
******************************************************************************/

#ifndef __SCHEDULE_H_
#define __SCHEDULE_H_

#ifdef __cplusplus
extern "C" {
#endif

#include <common.h>
#include <mutex.h>
#include <event.h>

/******************************************************************************
* 函数名称: void schedule(void)
* 功能说明: 进程调度
* 输入参数: 无
* 输出参数: 无
* 函数返回: 无
* 其它说明: 无
******************************************************************************/
void schedule(void);

/******************************************************************************
* 函数名称: E_RET MutexSuspend(MUTEX* mutex)
* 功能说明: 将当前任务节点从任务就绪队列中转移到互斥锁的等待队列中
* 输入参数: MUTEX* mutex        --互斥锁
* 输出参数: 无
* 函数返回: E_OK:成功; E_ERR:失败
* 其它说明: 无
******************************************************************************/
E_RET MutexSuspend(MUTEX* mutex);

/******************************************************************************
* 函数名称: E_RET MutexResume(MUTEX* mutex)
* 功能说明: 将互斥锁等待队列中的任务转移到任务就绪队列中
* 输入参数: MUTEX* mutex        --互斥锁
* 输出参数: 无
* 函数返回: E_OK:成功; E_ERR:失败
* 其它说明: 无
******************************************************************************/
E_RET MutexResume(MUTEX* mutex);

/******************************************************************************
* 函数名称: E_RET EventSuspend(EVENT* event)
* 功能说明: 将当前任务节点从任务就绪队列中转移到等待时间的等待队列中
* 输入参数: EVENT* event        --事件
* 输出参数: 无
* 函数返回: E_OK:成功; E_ERR:失败
* 其它说明: 无
******************************************************************************/
E_RET EventSuspend(EVENT* event);

/******************************************************************************
* 函数名称: E_RET EventResume(EVENT* event)
* 功能说明: 将事件 event 中的等待队列中的任务转移到任务就绪队列中
* 输入参数: EVENT* event        --事件
* 输出参数: 无
* 函数返回: E_OK:成功; E_ERR:失败
* 其它说明: 无
******************************************************************************/
E_RET EventResume(EVENT* event);


#ifdef __cplusplus
}
#endif

#endif

